from django.shortcuts import render

# Create your views here.
from rest_framework import request
from rest_framework.request import Request
from rest_framework.views import APIView
from rest_framework.response import Response

from users.serializer import RegiserUserSerializer
from .models import User

class RegisterUsernameCountAPIView(APIView):
    """
    获取用户名的个数
    GET:  /users/usernames/(?P<username>\w{5,20})/count/
    """

    def get(self,request,username):

        #通过模型查询,获取用户名个数
        count = User.objects.filter(username=username).count()
        #组织数据
        context = {
            'count':count,
            'username':username
        }
        return Response(context)

class RegisterPhoneCountAPIView(APIView):
    """
    查询手机号的个数
    GET: /users/phones/(?P<mobile>1[345789]\d{9})/count/
    """
    def get(self,request,mobile):

        #通过模型查询获取手机号个数
        count = User.objects.filter(mobile=mobile).count()
        #组织数据
        context = {
            'count':count,
            'phone':mobile
        }

        return Response(context)




class RegisterUserAPIView(APIView):

    def post(self,request):
        # 1.接收数据
        data = request.data
        serializer = RegiserUserSerializer(data=data)
        # 2.数据验证
        serializer.is_valid(raise_exception=True)
        # 3.数据入库
        serializer.save()
        # 4.返回数据 进行序列化操作
        # 如何进行序列化：
        # 就是序列化器根据字段来查询模型中的对应字典，如果序列化器中有该字段
        #  模型中没有该字段，则会报错
        # 如果有该字段，检查是否有write_only
        # 如果write_only为True则进行序列化的时候,不使用该字段
        return Response(serializer.data)


"""
当用户注册成功之后，自动登陆
自动登陆的功能要求用户注册成功之后，返回数据的时候
需要添加一个token

1.序列化的时候添加token
2.token怎么生成


"""
